home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / MEMORY.SWG / 0014_SMARTDRV.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  1KB  |  56 lines

  1. { MN> How can I find out if Smartdrv is installed ? I have  made a  harddisk
  2.  MN> benchmark  Program,  and  I  would like  it to  detect if  Smartdrv is
  3.  MN> installed.
  4. }
  5. Uses Dos;
  6.  
  7. Function SmartDrvVersion:Integer;  { -1 means not inSTALLED }
  8. Var
  9.   R: Registers;
  10.   B: Array[0..$27] of Byte; { return Buffer }
  11.   F: Text;
  12.  
  13. begin
  14.   SmartDrvVersion := -1;  { assume NO smartdrv ! }
  15.  
  16.   {--------Check For SmartDrv.EXE---------- }
  17.   FillChar( R, Sizeof(R), 0 );
  18.   R.AX := $4A10;  { install-check }
  19.   Intr( $2F, R );
  20.   if R.FLAGS and FCARRY = 0 then  { OK! }
  21.     begin
  22.     if R.AX = $BABE then          { the MAGIC-# }
  23.       begin
  24.         SmartDrvVersion := Integer(R.BP);
  25.         Exit
  26.       end;
  27.     end;
  28.   { -------Check For SmartDrv.SYS----------- }
  29.   Assign(f,'SMARTAAR');
  30.   {$I-}
  31.   Reset(f);
  32.   {$I+}
  33.   if IoResult <> 0 then Exit; { No SmartDrv }
  34.   FillChar( R, Sizeof(R), 0 );
  35.   R.AX := $4402; { IoCtl }
  36.   R.BX := TextRec(f).Handle;
  37.   R.CX := Sizeof(B);
  38.   R.DS := Seg(B);
  39.   R.DX := ofs(B);
  40.   MsDos(R);  { int 21h }
  41.   close(f);
  42.   if R.FLAGS and FCARRY <> 0 then Exit;  { Error-# in R.AX ...}
  43.   SmartDrvVersion :=  B[$E] + 256* B[$F];
  44. end;
  45.  
  46. Var
  47.   SMV:Integer;
  48. begin
  49.   SMV := SmartDrvVersion;
  50.   Write(' SmartDrv');
  51.   if SMV = -1 then
  52.     Writeln('  not installed.')
  53.   else
  54.     Writeln('  V', SMV div 256,'.',SMV mod 256,' installed.');
  55. end.
  56.